package JouTest;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import javax.swing.JPanel;

import chargement.RepositoryT;
import Equipement.Baton;
import Equipement.Bombe;
import Equipement.Couteau;
import Equipement.Equipement;
import Equipement.Gourdin;
import Equipement.Lance;
import Equipement.Laser;
import Equipement.Mettrallette;
import Equipement.Revolver;
import Equipement.Sort;
import Monde.IMondeVirtual;
import Monde.Monde;
import Monde.MondeContemporain;
import Monde.MondeFuturiste;
import Monde.MondeMedieval;
import Personnage.Cyborg;
import Personnage.Guerrier;
import Personnage.Personnage;
import Personnage.Policier;

public class JouTest {

	/**
	 * @param args
	 */
	//Declaration pour ajouter MyClassLoader
	private static File md;
	private static File f = new File("/home/rita/workspace/yulitatest/bin");
	private static RepositoryT<Object> rpT = new RepositoryT<Object>(f, Object.class);
	private static Set<String> listePlugins = new HashSet<String>();
	private static HashMap<String, JMenuItem> dictionnaireMenu = new HashMap<String, JMenuItem>();
	
	//ajouter une liste de plugin
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		System.out.println("debut de la partie...");
		System.out.println("*****creation du monde****");
		
		Monde mondemedieval = new Monde("Monde Medieval");
		IMondeVirtual mondeA= new MondeMedieval();
		mondeA.creerMonde(mondemedieval);
		
		Personnage A= new Guerrier("Guerrier 1", 1);
		A.setNomJoueur("Guerrier1");
		//A.setPointdeVie(10);
		
		mondeA.creerPersonnage(A);
		
		Equipement E =new Mettrallette("Metrallette", 2, 2);
		//A.addEquipement("E", 0, 0);
		Equipement E2 =new Sort("Sort", 2, 2);
		//A.addEquipement("E2", 0, 0);
		Equipement E3 =new Couteau("Couteau", 2, 2);
		//A.addEquipement("E3", 0, 0);
		
		//Insertion des equipement dans une ArrayList
		ArrayList<Equipement> equipementmondemedieval = new ArrayList<Equipement>();
		equipementmondemedieval.add(E);
		equipementmondemedieval.add(E2);
		equipementmondemedieval.add(E3);
		
		
		
		
		System.out.println("nom du Joueur: "+A.getNomJoueur());
		System.out.println("appartient au monde: "+mondemedieval.getNom());
		System.out.println("il a comme equipement: ");
		
		for( Equipement a: equipementmondemedieval)
		{
			System.out.println(a.getNomEquipement());
			
		}
	
		
		System.out.println("le personnage: "+A.getNomJoueur()+ " se fait attaquer donc \n il pert 15 point de vie");
		A.setPointdeVie(85);
		System.out.println("points de vie "+A.getPointdeVie());
		
		System.out.println("le personnage "+A.getNomJoueur()+ "se soigner pendant 2 minutes");
		A.seSoigner(2);
		System.out.println("points de vie "+A.getPointdeVie());
	
		/*
		//Monde comtemporain:
		Monde mondecontemporain = new Monde("Monde2");
		IMondeVirtual mondeB= new MondeContemporain();
		mondeB.creerMonde(mondecontemporain);
		
		Personnage B= new Policier("Policier1", 1);
		A.setNomJoueur("Policier Monde Comtemporain");
		
		mondeA.creerPersonnage(B);
		
		Equipement Eq =new Revolver("Revolver1", 2, 2);
		B.ListAjouterEquipement("Eq");
		Equipement Eq2 =new Baton("Baton", 2, 2);
		B.ListAjouterEquipement("Eq2");
		Equipement Eq3 =new Bombe("Bombe", 2, 2);
		A.ListAjouterEquipement("Eq3");
		
		
		
		//Monde Futuriste
		Monde mondefuturiste = new Monde("Monde3");
		IMondeVirtual mondeC= new MondeFuturiste();
		mondeB.creerMonde(mondefuturiste);
		
		Personnage C= new Cyborg("Cyborg", 1);
		A.setNomJoueur("Cyborg Monde futuriste");
		
		mondeC.creerPersonnage(C);
		
		Equipement Eqi =new Lance("Lance", 2, 2);
		B.ListAjouterEquipement("Eqi");
		Equipement Eqi2 =new Gourdin("Gourdin", 2, 2);
		B.ListAjouterEquipement("Eq2");
		Equipement Eqi3 =new Laser("Laser", 2, 2);
		A.ListAjouterEquipement("Eq3");
		
		
		
	
		
		
		System.out.println("*******");
		System.out.println("creation du monde medieval:"+mondeA);
		System.out.println("creation du personnage:"+A);
		System.out.println("creation du equipement:"+E);
		*/
		
		//ajoute des frames
		/*
		JFrame frame = new JFrame("Interface de creation");	
		JMenuBar bar = new JMenuBar();
		JMenu fileF = new JMenu("Monde");
		JMenuItem mondemedieva=new JMenuItem("Monde Medieval");
		
		JMenu fileF2 = new JMenu("Help");
		bar.add(fileF);
		bar.add(fileF2);
		frame.setSize(640,480);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		*/
		
		JFrame frame = new JFrame("Interface de creation");	 
		JMenuBar menuBar = new JMenuBar(); 
		JMenu menu1 = new JMenu("Monde");
 
		JMenuItem mmedieval = new JMenuItem("monde medieval");
		menu1.add(mmedieval);
		//mmedieval.addActionListener(this);
 
		JMenuItem mcomtemporain = new JMenuItem("monde comtemporain");
		menu1.add(mcomtemporain);
		//mcomtemporain.addActionListener(l);
		
		JMenuItem mfuturiste = new JMenuItem("monde futuriste");
		menu1.add(mfuturiste);
		//mfuturiste.addActionListener(l);
 
		menuBar.add(menu1);
 
		JMenu menu2 = new JMenu("?");
 
 
		menuBar.add(menu2);
 
		frame.setJMenuBar(menuBar);
		frame.setSize(640,480);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		frame.setContentPane(buildContentPane());
		
		
		
		//3eme fenetre:
		
		//deuxième fenetre au moment de choisir monde medieval
		
		JFrame fmmcomtemporaine= new JFrame ("Monde Contemporaine");
		fmmcomtemporaine.setSize(640,480);
		fmmcomtemporaine.setVisible(true);
		fmmcomtemporaine.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
	}
	private static JPanel buildContentPane(){
		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout());
		panel.setBackground(Color.white);
		
		
		return panel;
	}
	
	public void actionPerformed(ActionEvent e ){

		//deuxième fenetre au moment de choisir monde medieval
		
		JFrame fmmedieval= new JFrame ("Monde Medieval");
		fmmedieval.setSize(640,480);
		fmmedieval.setVisible(true);
		fmmedieval.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		
	}
	
	/*
	public void actionPerformed(ActionEvent e ){

		//deuxième fenetre au moment de choisir monde medieval
		
		JFrame fmmedieval= new JFrame ("Monde Medieval");
		fmmedieval.setSize(640,480);
		fmmedieval.setVisible(true);
		fmmedieval.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		
		
	}*/
	
//PLUGINS
	
	private static void loadPlugins(final JPanel pluginViewer, final JFrame window, JMenu fileM) throws IllegalAccessException, InvocationTargetException {
		List<Class<? extends Object>> maListe;
		maListe = rpT.load();
		for (final Class<?> c : maListe) {
			
		}
	
	}
	
	

}
